(()=>{"use strict";const modules_flsModules={};function isWebp(){function testWebP(callback){let webP=new Image();webP.onload=webP.onerror=function(){callback(webP.height==2)};webP.src="data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA"} testWebP(function(support){let className=support===!0?"webp":"no-webp";document.documentElement.classList.add(className)})} let isMobile={Android:function(){return navigator.userAgent.match(/Android/i)},BlackBerry:function(){return navigator.userAgent.match(/BlackBerry/i)},iOS:function(){return navigator.userAgent.match(/iPhone|iPad|iPod/i)},Opera:function(){return navigator.userAgent.match(/Opera Mini/i)},Windows:function(){return navigator.userAgent.match(/IEMobile/i)},any:function(){return(isMobile.Android()||isMobile.BlackBerry()||isMobile.iOS()||isMobile.Opera()||isMobile.Windows())},};function addTouchClass(){if(isMobile.any())document.documentElement.classList.add("touch")} function addLoadedClass(){window.addEventListener("load",function(){setTimeout(function(){document.documentElement.classList.add("loaded")},0)})} let _slideUp=(target,duration=500,showmore=0)=>{if(!target.classList.contains("_slide")){target.classList.add("_slide");target.style.transitionProperty="height, margin, padding";target.style.transitionDuration=duration+"ms";target.style.height=`${target.offsetHeight}px`;target.offsetHeight;target.style.overflow="hidden";target.style.height=showmore?`${showmore}px`:`0px`;target.style.paddingTop=0;target.style.paddingBottom=0;target.style.marginTop=0;target.style.marginBottom=0;window.setTimeout(()=>{target.hidden=!showmore?!0:!1;!showmore?target.style.removeProperty("height"):null;target.style.removeProperty("padding-top");target.style.removeProperty("padding-bottom");target.style.removeProperty("margin-top");target.style.removeProperty("margin-bottom");!showmore?target.style.removeProperty("overflow"):null;target.style.removeProperty("transition-duration");target.style.removeProperty("transition-property");target.classList.remove("_slide");document.dispatchEvent(new CustomEvent("slideUpDone",{detail:{target,},}))},duration)}};let _slideDown=(target,duration=500,showmore=0)=>{if(!target.classList.contains("_slide")){target.classList.add("_slide");target.hidden=target.hidden?!1:null;showmore?target.style.removeProperty("height"):null;let height=target.offsetHeight;target.style.overflow="hidden";target.style.height=showmore?`${showmore}px`:`0px`;target.style.paddingTop=0;target.style.paddingBottom=0;target.style.marginTop=0;target.style.marginBottom=0;target.offsetHeight;target.style.transitionProperty="height, margin, padding";target.style.transitionDuration=duration+"ms";target.style.height=height+"px";target.style.removeProperty("padding-top");target.style.removeProperty("padding-bottom");target.style.removeProperty("margin-top");target.style.removeProperty("margin-bottom");window.setTimeout(()=>{target.style.removeProperty("height");target.style.removeProperty("overflow");target.style.removeProperty("transition-duration");target.style.removeProperty("transition-property");target.classList.remove("_slide");document.dispatchEvent(new CustomEvent("slideDownDone",{detail:{target,},}))},duration)}};let _slideToggle=(target,duration=500)=>{if(target.hidden)return _slideDown(target,duration);else return _slideUp(target,duration)};let bodyLockStatus=!0;let bodyLockToggle=(delay=500)=>{if(document.documentElement.classList.contains("lock"))bodyUnlock(delay);else bodyLock(delay)};let bodyUnlock=(delay=500)=>{let body=document.querySelector("body");if(bodyLockStatus){let lock_padding=document.querySelectorAll("[data-lp]");setTimeout(()=>{for(let index=0;index{let body=document.querySelector("body");if(bodyLockStatus){let lock_padding=document.querySelectorAll("[data-lp]");for(let index=0;index{if(window.innerWidth<992)_slideUp(sublist,0);removeClasses(allLinks,"opened")})} function initTouchMenu(){hideAllSublists();document.addEventListener("click",function(e){const target=e.target;if(target.closest(".menu__body")){const menuItem=target.closest(".menu__item");if(menuItem&&menuItem.querySelector(".menu__sublist")&&!target.closest(".menu__sublist")){e.preventDefault();const sublist=menuItem.querySelector(".menu__sublist");if(menuItem.classList.contains("opened")){menuItem.classList.remove("opened");_slideUp(sublist);return} hideAllSublists();menuItem.classList.add("opened");if(sublist&&window.innerWidth<992) setTimeout(()=>{_slideToggle(sublist)},0)}}else hideAllSublists()})} document.documentElement.classList.contains("touch")?initTouchMenu():subLists.forEach((element)=>element.removeAttribute("hidden"))} function FLS(message){setTimeout(()=>{if(window.FLS)console.log(message)},0)} function removeClasses(array,className){for(var i=0;i{const targetBlockElement=document.querySelector(targetBlock);if(targetBlockElement){let headerItem="";let headerItemHeight=0;if(noHeader){headerItem="header.header";const headerElement=document.querySelector(headerItem);if(!headerElement.classList.contains("_header-scroll")){headerElement.style.cssText=`transition-duration: 0s;`;headerElement.classList.add("_header-scroll");headerItemHeight=headerElement.offsetHeight;headerElement.classList.remove("_header-scroll");setTimeout(()=>{headerElement.style.cssText=``},0)}else headerItemHeight=headerElement.offsetHeight} let options={speedAsDuration:!0,speed,header:headerItem,offset:offsetTop,easing:"easeOutQuad",};document.documentElement.classList.contains("menu-open")?functions_menuClose():null;if(typeof SmoothScroll!=="undefined") new SmoothScroll().animateScroll(targetBlockElement,"",options);else{let targetBlockElementPosition=targetBlockElement.getBoundingClientRect().top+scrollY;targetBlockElementPosition=headerItemHeight?targetBlockElementPosition-headerItemHeight:targetBlockElementPosition;targetBlockElementPosition=offsetTop?targetBlockElementPosition-offsetTop:targetBlockElementPosition;window.scrollTo({top:targetBlockElementPosition,behavior:"smooth",})} FLS(`[gotoBlock]: Yoohoo...going to ${targetBlock}`)}else FLS(`[gotoBlock]: Uh-oh. That block isn't on the page: ${targetBlock}`)};let addWindowScrollEvent=!1;function headerScroll(){addWindowScrollEvent=!0;const header=document.querySelector("header.header");const headerShow=header.hasAttribute("data-scroll-show");const headerShowTimer=header.dataset.scrollShow?header.dataset.scrollShow:500;const startPoint=header.dataset.scroll?header.dataset.scroll:1;let scrollDirection=0;let timer;document.addEventListener("windowScroll",function(e){const scrollTop=window.scrollY;clearTimeout(timer);if(scrollTop>=startPoint){!header.classList.contains("_header-scroll")?header.classList.add("_header-scroll"):null;if(headerShow){if(scrollTop>scrollDirection) header.classList.contains("_header-show")?header.classList.remove("_header-show"):null;else!header.classList.contains("_header-show")?header.classList.add("_header-show"):null;timer=setTimeout(()=>{!header.classList.contains("_header-show")?header.classList.add("_header-show"):null},headerShowTimer)}}else{header.classList.contains("_header-scroll")?header.classList.remove("_header-scroll"):null;if(headerShow) header.classList.contains("_header-show")?header.classList.remove("_header-show"):null} scrollDirection=scrollTop<=0?0:scrollTop})} setTimeout(()=>{if(addWindowScrollEvent){let windowScroll=new Event("windowScroll");window.addEventListener("scroll",function(e){document.dispatchEvent(windowScroll)})}},0);function formFieldsInit(options={viewPass:!1,autoHeight:!1,}){const formFields=document.querySelectorAll("input[placeholder],textarea[placeholder]");if(formFields.length) formFields.forEach((formField)=>{if(!formField.hasAttribute("data-placeholder-nohide")) formField.dataset.placeholder=formField.placeholder});document.body.addEventListener("focusin",function(e){const targetElement=e.target;if(targetElement.tagName==="INPUT"||targetElement.tagName==="TEXTAREA"){if(targetElement.dataset.placeholder)targetElement.placeholder="";if(!targetElement.hasAttribute("data-no-focus-classes")){targetElement.classList.add("_form-focus");targetElement.parentElement.classList.add("_form-focus")} formValidate.removeError(targetElement)}});document.body.addEventListener("focusout",function(e){const targetElement=e.target;if(targetElement.tagName==="INPUT"||targetElement.tagName==="TEXTAREA"){if(targetElement.dataset.placeholder) targetElement.placeholder=targetElement.dataset.placeholder;if(!targetElement.hasAttribute("data-no-focus-classes")){targetElement.classList.remove("_form-focus");targetElement.parentElement.classList.remove("_form-focus")} if(targetElement.hasAttribute("data-validate")) formValidate.validateInput(targetElement)}});if(options.viewPass) document.addEventListener("click",function(e){let targetElement=e.target;if(targetElement.closest('[class*="__viewpass"]')){let inputType=targetElement.classList.contains("_viewpass-active")?"password":"text";targetElement.parentElement.querySelector("input").setAttribute("type",inputType);targetElement.classList.toggle("_viewpass-active")}});if(options.autoHeight){const textareas=document.querySelectorAll("textarea[data-autoheight]");if(textareas.length){textareas.forEach((textarea)=>{const startHeight=textarea.hasAttribute("data-autoheight-min")?Number(textarea.dataset.autoheightMin):Number(textarea.offsetHeight);const maxHeight=textarea.hasAttribute("data-autoheight-max")?Number(textarea.dataset.autoheightMax):1/0;setHeight(textarea,Math.min(startHeight,maxHeight));textarea.addEventListener("input",()=>{if(textarea.scrollHeight>startHeight){textarea.style.height=`auto`;setHeight(textarea,Math.min(Math.max(textarea.scrollHeight,startHeight),maxHeight))}})});function setHeight(textarea,height){textarea.style.height=`${height}px`}}}} let formValidate={getErrors(form){let error=0;let formRequiredItems=form.querySelectorAll("*[data-required]");if(formRequiredItems.length) formRequiredItems.forEach((formRequiredItem)=>{if((formRequiredItem.offsetParent!==null||formRequiredItem.tagName==="SELECT")&&!formRequiredItem.disabled) error+=this.validateInput(formRequiredItem)});return error},validateInput(formRequiredItem){let error=0;if(formRequiredItem.dataset.required==="email"){formRequiredItem.value=formRequiredItem.value.replace(" ","");if(this.emailTest(formRequiredItem)){this.addError(formRequiredItem);error++}else this.removeError(formRequiredItem)}else if(formRequiredItem.type==="checkbox"&&!formRequiredItem.checked){this.addError(formRequiredItem);error++}else if(!formRequiredItem.value.trim()){this.addError(formRequiredItem);error++}else this.removeError(formRequiredItem);return error},addError(formRequiredItem){formRequiredItem.classList.add("_form-error");formRequiredItem.parentElement.classList.add("_form-error");let inputError=formRequiredItem.parentElement.querySelector(".form__error");if(inputError)formRequiredItem.parentElement.removeChild(inputError);if(formRequiredItem.dataset.error) formRequiredItem.parentElement.insertAdjacentHTML("beforeend",`
${formRequiredItem.dataset.error}
`)},removeError(formRequiredItem){formRequiredItem.classList.remove("_form-error");formRequiredItem.parentElement.classList.remove("_form-error");if(formRequiredItem.parentElement.querySelector(".form__error")) formRequiredItem.parentElement.removeChild(formRequiredItem.parentElement.querySelector(".form__error"))},formClean(form){form.reset();setTimeout(()=>{let inputs=form.querySelectorAll("input,textarea");for(let index=0;index0) for(let index=0;index{form.classList.remove("_sending");formSent(form)},8e3);return} const ajax=form.hasAttribute("data-ajax");if(ajax){e.preventDefault();const formAction=form.getAttribute("action")?form.getAttribute("action").trim():"#";const formMethod=form.getAttribute("method")?form.getAttribute("method").trim():"GET";const formData=new FormData(form);form.classList.add("_sending");const response=await fetch(formAction,{method:formMethod,body:formData,});if(response.ok){let responseResult=await response.json();form.classList.remove("_sending");formSent(form,responseResult)}else{alert("Error");form.classList.remove("_sending")}}}else{e.preventDefault();if(form.querySelector("._form-error")&&form.hasAttribute("data-goto-error")){const formGoToErrorClass=form.dataset.gotoError?form.dataset.gotoError:"._form-error";gotoblock_gotoBlock(formGoToErrorClass,!0,1e3)}}} function formSent(form,responseResult=``){document.dispatchEvent(new CustomEvent("formSent",{detail:{form,},}));setTimeout(()=>{if(modules_flsModules.popup){const popup=form.dataset.popupMessage;popup?modules_flsModules.popup.open(popup):null}},0);formValidate.formClean(form);formLogging(`Form sent!`)} function formLogging(message){FLS(`[Forms]: ${message}`)}} class SelectConstructor{constructor(props,data=null){let defaultConfig={init:!0,logging:!0,};this.config=Object.assign(defaultConfig,props);this.selectClasses={classSelect:"select",classSelectBody:"select__body",classSelectTitle:"select__title",classSelectValue:"select__value",classSelectLabel:"select__label",classSelectInput:"select__input",classSelectText:"select__text",classSelectLink:"select__link",classSelectOptions:"select__options",classSelectOptionsScroll:"select__scroll",classSelectOption:"select__option",classSelectContent:"select__content",classSelectRow:"select__row",classSelectData:"select__asset",classSelectDisabled:"_select-disabled",classSelectTag:"_select-tag",classSelectOpen:"_select-open",classSelectActive:"_select-active",classSelectFocus:"_select-focus",classSelectMultiple:"_select-multiple",classSelectCheckBox:"_select-checkbox",classSelectOptionSelected:"_select-selected",classSelectPseudoLabel:"select__pseudo-label",};this._this=this;if(this.config.init){const selectItems=data?document.querySelectorAll(data):document.querySelectorAll("select");if(selectItems.length){this.selectsInit(selectItems);this.setLogging(`Проснулся, построил селектов: (${selectItems.length})`)}else this.setLogging("Сплю, нет ни одного select zzZZZzZZz")}} getSelectClass(className){return `.${className}`} getSelectElement(selectItem,className){return{originalSelect:selectItem.querySelector("select"),selectElement:selectItem.querySelector(this.getSelectClass(className)),}} selectsInit(selectItems){selectItems.forEach((originalSelect,index)=>{this.selectInit(originalSelect,index+1)});document.addEventListener("click",function(e){this.selectsActions(e)}.bind(this));document.addEventListener("keydown",function(e){this.selectsActions(e)}.bind(this));document.addEventListener("focusin",function(e){this.selectsActions(e)}.bind(this));document.addEventListener("focusout",function(e){this.selectsActions(e)}.bind(this))} selectInit(originalSelect,index){const _this=this;let selectItem=document.createElement("div");selectItem.classList.add(this.selectClasses.classSelect);originalSelect.parentNode.insertBefore(selectItem,originalSelect);selectItem.appendChild(originalSelect);originalSelect.hidden=!0;index?(originalSelect.dataset.id=index):null;if(this.getSelectPlaceholder(originalSelect)){originalSelect.dataset.placeholder=this.getSelectPlaceholder(originalSelect).value;if(this.getSelectPlaceholder(originalSelect).label.show){const selectItemTitle=this.getSelectElement(selectItem,this.selectClasses.classSelectTitle).selectElement;selectItemTitle.insertAdjacentHTML("afterbegin",`${ this.getSelectPlaceholder(originalSelect).label.text ? this.getSelectPlaceholder(originalSelect).label.text : this.getSelectPlaceholder(originalSelect).value }`)}} selectItem.insertAdjacentHTML("beforeend",`
`);this.selectBuild(originalSelect);originalSelect.dataset.speed=originalSelect.dataset.speed?originalSelect.dataset.speed:"150";originalSelect.addEventListener("change",function(e){_this.selectChange(e)})} selectBuild(originalSelect){const selectItem=originalSelect.parentElement;selectItem.dataset.id=originalSelect.dataset.id;originalSelect.dataset.classModif?selectItem.classList.add(`select_${originalSelect.dataset.classModif}`):null;originalSelect.multiple?selectItem.classList.add(this.selectClasses.classSelectMultiple):selectItem.classList.remove(this.selectClasses.classSelectMultiple);originalSelect.hasAttribute("data-checkbox")&&originalSelect.multiple?selectItem.classList.add(this.selectClasses.classSelectCheckBox):selectItem.classList.remove(this.selectClasses.classSelectCheckBox);this.setSelectTitleValue(selectItem,originalSelect);this.setOptions(selectItem,originalSelect);originalSelect.hasAttribute("data-search")?this.searchActions(selectItem):null;originalSelect.hasAttribute("data-open")?this.selectAction(selectItem):null;this.selectDisabled(selectItem,originalSelect)} selectsActions(e){const targetElement=e.target;const targetType=e.type;if(targetElement.closest(this.getSelectClass(this.selectClasses.classSelect))||targetElement.closest(this.getSelectClass(this.selectClasses.classSelectTag))){const selectItem=targetElement.closest(".select")?targetElement.closest(".select"):document.querySelector(`.${this.selectClasses.classSelect}[data-id="${ targetElement.closest( this.getSelectClass(this.selectClasses.classSelectTag) ).dataset.selectId }"]`);const originalSelect=this.getSelectElement(selectItem).originalSelect;if(targetType==="click"){if(!originalSelect.disabled) if(targetElement.closest(this.getSelectClass(this.selectClasses.classSelectTag))){const targetTag=targetElement.closest(this.getSelectClass(this.selectClasses.classSelectTag));const optionItem=document.querySelector(`.${this.selectClasses.classSelect}[data-id="${targetTag.dataset.selectId}"] .select__option[data-value="${targetTag.dataset.value}"]`);this.optionAction(selectItem,originalSelect,optionItem)}else if(targetElement.closest(this.getSelectClass(this.selectClasses.classSelectTitle))) this.selectAction(selectItem);else if(targetElement.closest(this.getSelectClass(this.selectClasses.classSelectOption))){const optionItem=targetElement.closest(this.getSelectClass(this.selectClasses.classSelectOption));this.optionAction(selectItem,originalSelect,optionItem)}}else if(targetType==="focusin"||targetType==="focusout"){if(targetElement.closest(this.getSelectClass(this.selectClasses.classSelect))) targetType==="focusin"?selectItem.classList.add(this.selectClasses.classSelectFocus):selectItem.classList.remove(this.selectClasses.classSelectFocus)}else if(targetType==="keydown"&&e.code==="Escape") this.selectsСlose()}else this.selectsСlose()} selectsСlose(selectOneGroup){const selectsGroup=selectOneGroup?selectOneGroup:document;const selectActiveItems=selectsGroup.querySelectorAll(`${this.getSelectClass( this.selectClasses.classSelect )}${this.getSelectClass(this.selectClasses.classSelectOpen)}`);if(selectActiveItems.length) selectActiveItems.forEach((selectActiveItem)=>{this.selectСlose(selectActiveItem)})} selectСlose(selectItem){const originalSelect=this.getSelectElement(selectItem).originalSelect;const selectOptions=this.getSelectElement(selectItem,this.selectClasses.classSelectOptions).selectElement;if(!selectOptions.classList.contains("_slide")){selectItem.classList.remove(this.selectClasses.classSelectOpen);_slideUp(selectOptions,originalSelect.dataset.speed)}} selectAction(selectItem){const originalSelect=this.getSelectElement(selectItem).originalSelect;const selectOptions=this.getSelectElement(selectItem,this.selectClasses.classSelectOptions).selectElement;if(originalSelect.closest("[data-one-select]")){const selectOneGroup=originalSelect.closest("[data-one-select]");this.selectsСlose(selectOneGroup)} if(!selectOptions.classList.contains("_slide")){selectItem.classList.toggle(this.selectClasses.classSelectOpen);_slideToggle(selectOptions,originalSelect.dataset.speed)}} setSelectTitleValue(selectItem,originalSelect){const selectItemBody=this.getSelectElement(selectItem,this.selectClasses.classSelectBody).selectElement;const selectItemTitle=this.getSelectElement(selectItem,this.selectClasses.classSelectTitle).selectElement;if(selectItemTitle)selectItemTitle.remove();selectItemBody.insertAdjacentHTML("afterbegin",this.getSelectTitleValue(selectItem,originalSelect))} getSelectTitleValue(selectItem,originalSelect){let selectTitleValue=this.getSelectedOptionsData(originalSelect,2).html;if(originalSelect.multiple&&originalSelect.hasAttribute("data-tags")){selectTitleValue=this.getSelectedOptionsData(originalSelect).elements.map((option)=>`${this.getSelectElementContent( option )}`).join("");if(originalSelect.dataset.tags&&document.querySelector(originalSelect.dataset.tags)){document.querySelector(originalSelect.dataset.tags).innerHTML=selectTitleValue;if(originalSelect.hasAttribute("data-search")) selectTitleValue=!1}} selectTitleValue=selectTitleValue.length?selectTitleValue:originalSelect.dataset.placeholder?originalSelect.dataset.placeholder:"";let pseudoAttribute="";let pseudoAttributeClass="";if(originalSelect.hasAttribute("data-pseudo-label")){pseudoAttributeClass=` ${this.selectClasses.classSelectPseudoLabel}`;pseudoAttribute=originalSelect.dataset.pseudoLabel?`${originalSelect.dataset.pseudoLabel}`:``} this.getSelectedOptionsData(originalSelect).values.length?selectItem.classList.add(this.selectClasses.classSelectActive):selectItem.classList.remove(this.selectClasses.classSelectActive);if(originalSelect.hasAttribute("data-search")) return `
`;else{const customClass=this.getSelectedOptionsData(originalSelect).elements.length&&this.getSelectedOptionsData(originalSelect).elements[0].dataset.class?` ${ this.getSelectedOptionsData(originalSelect).elements[0].dataset .class }`:"";return `\n\t\t\t`}} getSelectElementContent(selectOption){const selectOptionData=selectOption.dataset.asset?`${selectOption.dataset.asset}`:"";const selectOptionContryCode=selectOption.dataset.country?`${selectOption.dataset.country}`:"";const selectOptionDataHTML=selectOptionData.indexOf("images")>=0?``:selectOptionData;let selectOptionContentHTML=``;selectOptionContentHTML+=selectOptionData?``:"";selectOptionContentHTML+=selectOptionData?``:"";selectOptionContentHTML+=selectOptionData?selectOptionDataHTML:"";selectOptionContentHTML+=selectOptionContryCode?``:"";selectOptionContentHTML+=selectOptionContryCode?selectOptionContryCode:"";selectOptionContentHTML+=selectOptionContryCode?``:"";selectOptionContentHTML+=selectOptionData?``:"";selectOptionContentHTML+=selectOptionData?``:"";selectOptionContentHTML+=selectOption.textContent;selectOptionContentHTML+=selectOptionData?``:"";selectOptionContentHTML+=selectOptionData?``:"";return selectOptionContentHTML} getSelectPlaceholder(originalSelect){const selectPlaceholder=Array.from(originalSelect.options).find((option)=>!option.value);if(selectPlaceholder) return{value:selectPlaceholder.textContent,show:selectPlaceholder.hasAttribute("data-show"),label:{show:selectPlaceholder.hasAttribute("data-label"),text:selectPlaceholder.dataset.label,},}} getSelectedOptionsData(originalSelect,type){let selectedOptions=[];if(originalSelect.multiple) selectedOptions=Array.from(originalSelect.options).filter((option)=>option.value).filter((option)=>option.selected);else selectedOptions.push(originalSelect.options[originalSelect.selectedIndex]);return{elements:selectedOptions.map((option)=>option),values:selectedOptions.filter((option)=>option.value).map((option)=>option.value),html:selectedOptions.map((option)=>this.getSelectElementContent(option)),}} getOptions(originalSelect){let selectOptionsScroll=originalSelect.hasAttribute("data-scroll")?`data-simplebar`:"";let selectOptionsScrollHeight=originalSelect.dataset.scroll?`style="max-height:${originalSelect.dataset.scroll}px"`:"";let selectOptions=Array.from(originalSelect.options);if(selectOptions.length>0){let selectOptionsHTML=``;if((this.getSelectPlaceholder(originalSelect)&&!this.getSelectPlaceholder(originalSelect).show)||originalSelect.multiple) selectOptions=selectOptions.filter((option)=>option.value);selectOptionsHTML+=selectOptionsScroll?`
`:"";selectOptions.forEach((selectOption)=>{selectOptionsHTML+=this.getOption(selectOption,originalSelect)});selectOptionsHTML+=selectOptionsScroll?`
`:"";return selectOptionsHTML}} getOption(selectOption,originalSelect){const selectOptionSelected=selectOption.selected&&originalSelect.multiple?` ${this.selectClasses.classSelectOptionSelected}`:"";const selectOptionHide=selectOption.selected&&!originalSelect.hasAttribute("data-show-selected")&&!originalSelect.multiple?`hidden`:``;const selectOptionClass=selectOption.dataset.class?` ${selectOption.dataset.class}`:"";const selectOptionLink=selectOption.dataset.href?selectOption.dataset.href:!1;const selectOptionLinkTarget=selectOption.hasAttribute("data-href-blank")?`target="_blank"`:"";let selectOptionHTML=``;selectOptionHTML+=selectOptionLink?``:``;return selectOptionHTML} setOptions(selectItem,originalSelect){const selectItemOptions=this.getSelectElement(selectItem,this.selectClasses.classSelectOptions).selectElement;selectItemOptions.innerHTML=this.getOptions(originalSelect)} optionAction(selectItem,originalSelect,optionItem){if(originalSelect.multiple){optionItem.classList.toggle(this.selectClasses.classSelectOptionSelected);const originalSelectSelectedItems=this.getSelectedOptionsData(originalSelect).elements;originalSelectSelectedItems.forEach((originalSelectSelectedItem)=>{originalSelectSelectedItem.removeAttribute("selected")});const selectSelectedItems=selectItem.querySelectorAll(this.getSelectClass(this.selectClasses.classSelectOptionSelected));selectSelectedItems.forEach((selectSelectedItems)=>{originalSelect.querySelector(`option[value="${selectSelectedItems.dataset.value}"]`).setAttribute("selected","selected")})}else{if(!originalSelect.hasAttribute("data-show-selected")){if(selectItem.querySelector(`${this.getSelectClass( this.selectClasses.classSelectOption )}[hidden]`)) selectItem.querySelector(`${this.getSelectClass( this.selectClasses.classSelectOption )}[hidden]`).hidden=!1;optionItem.hidden=!0} originalSelect.value=optionItem.hasAttribute("data-value")?optionItem.dataset.value:optionItem.textContent;this.selectAction(selectItem)} this.setSelectTitleValue(selectItem,originalSelect);this.setSelectChange(originalSelect)} selectChange(e){const originalSelect=e.target;this.selectBuild(originalSelect);this.setSelectChange(originalSelect)} setSelectChange(originalSelect){if(originalSelect.hasAttribute("data-validate")) formValidate.validateInput(originalSelect);if(originalSelect.hasAttribute("data-submit")&&originalSelect.value){let tempButton=document.createElement("button");tempButton.type="submit";originalSelect.closest("form").append(tempButton);tempButton.click();tempButton.remove()} const selectItem=originalSelect.parentElement;this.selectCallback(selectItem,originalSelect)} selectDisabled(selectItem,originalSelect){if(originalSelect.disabled){selectItem.classList.add(this.selectClasses.classSelectDisabled);this.getSelectElement(selectItem,this.selectClasses.classSelectTitle).selectElement.disabled=!0}else{selectItem.classList.remove(this.selectClasses.classSelectDisabled);this.getSelectElement(selectItem,this.selectClasses.classSelectTitle).selectElement.disabled=!1}} searchActions(selectItem){this.getSelectElement(selectItem).originalSelect;const selectInput=this.getSelectElement(selectItem,this.selectClasses.classSelectInput).selectElement;const selectOptions=this.getSelectElement(selectItem,this.selectClasses.classSelectOptions).selectElement;const selectOptionsItems=selectOptions.querySelectorAll(`.${this.selectClasses.classSelectOption}`);const _this=this;selectInput.addEventListener("input",function(){selectOptionsItems.forEach((selectOptionsItem)=>{if(selectOptionsItem.textContent.toUpperCase().indexOf(selectInput.value.toUpperCase())>=0) selectOptionsItem.hidden=!1;else selectOptionsItem.hidden=!0});selectOptions.hidden===!0?_this.selectAction(selectItem):null})} selectCallback(selectItem,originalSelect){document.dispatchEvent(new CustomEvent("selectCallback",{detail:{select:originalSelect,},}))} setLogging(message){this.config.logging?FLS(`[select]: ${message}`):null}} modules_flsModules.select=new SelectConstructor({});class Popup{constructor(options){let config={logging:!0,init:!0,attributeOpenButton:"data-popup",attributeCloseButton:"data-close",fixElementSelector:"[data-lp]",youtubeAttribute:"data-popup-youtube",youtubePlaceAttribute:"data-popup-youtube-place",setAutoplayYoutube:!0,classes:{popup:"popup",popupContent:"popup__content",popupActive:"popup_show",bodyActive:"popup-show",},focusCatch:!0,closeEsc:!0,bodyLock:!0,hashSettings:{location:!0,goHash:!0,},on:{beforeOpen:function(){},afterOpen:function(){},beforeClose:function(){},afterClose:function(){},},};this.youTubeCode;this.isOpen=!1;this.targetOpen={selector:!1,element:!1,};this.previousOpen={selector:!1,element:!1,};this.lastClosed={selector:!1,element:!1,};this._dataValue=!1;this.hash=!1;this._reopen=!1;this._selectorOpen=!1;this.lastFocusEl=!1;this._focusEl=["a[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"button:not([disabled]):not([aria-hidden])","select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","area[href]","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])',];this.options={...config,...options,classes:{...config.classes,...options?.classes,},hashSettings:{...config.hashSettings,...options?.hashSettings,},on:{...config.on,...options?.on,},};this.bodyLock=!1;this.options.init?this.initPopups():null} initPopups(){this.popupLogging(`I'm awake`);this.eventsPopup()} eventsPopup(){document.addEventListener("click",function(e){const buttonOpen=e.target.closest(`[${this.options.attributeOpenButton}]`);if(buttonOpen){e.preventDefault();this._dataValue=buttonOpen.getAttribute(this.options.attributeOpenButton)?buttonOpen.getAttribute(this.options.attributeOpenButton):"error";this.youTubeCode=buttonOpen.getAttribute(this.options.youtubeAttribute)?buttonOpen.getAttribute(this.options.youtubeAttribute):null;if(this._dataValue!=="error"){if(!this.isOpen)this.lastFocusEl=buttonOpen;this.targetOpen.selector=`${this._dataValue}`;this._selectorOpen=!0;this.open();return}else this.popupLogging(`Uh-oh, the attribute's not filled in ${buttonOpen.classList}`);return} const buttonClose=e.target.closest(`[${this.options.attributeCloseButton}]`);if(buttonClose||(!e.target.closest(`.${this.options.classes.popupContent}`)&&this.isOpen)){e.preventDefault();this.close();return}}.bind(this));document.addEventListener("keydown",function(e){if(this.options.closeEsc&&e.which==27&&e.code==="Escape"&&this.isOpen){e.preventDefault();this.close();return} if(this.options.focusCatch&&e.which==9&&this.isOpen){this._focusCatch(e);return}}.bind(this));if(this.options.hashSettings.goHash){window.addEventListener("hashchange",function(){if(window.location.hash)this._openToHash();else this.close(this.targetOpen.selector)}.bind(this));window.addEventListener("load",function(){if(window.location.hash)this._openToHash()}.bind(this))}} open(selectorValue){if(bodyLockStatus){this.bodyLock=document.documentElement.classList.contains("lock")&&!this.isOpen?!0:!1;if(selectorValue&&typeof selectorValue==="string"&&selectorValue.trim()!==""){this.targetOpen.selector=selectorValue;this._selectorOpen=!0} if(this.isOpen){this._reopen=!0;this.close()} if(!this._selectorOpen) this.targetOpen.selector=this.lastClosed.selector;if(!this._reopen)this.previousActiveElement=document.activeElement;this.targetOpen.element=document.querySelector(this.targetOpen.selector);if(this.targetOpen.element){if(this.youTubeCode){const codeVideo=this.youTubeCode;const iframe=document.createElement("iframe");iframe.setAttribute("allowfullscreen","");const autoplay=this.options.setAutoplayYoutube?"autoplay;":"";iframe.setAttribute("allow",`${autoplay}; encrypted-media`);iframe.setAttribute("src",codeVideo);if(!this.targetOpen.element.querySelector(`[${this.options.youtubePlaceAttribute}]`)){this.targetOpen.element.querySelector(".popup__text").setAttribute(`${this.options.youtubePlaceAttribute}`,"")} this.targetOpen.element.querySelector(`[${this.options.youtubePlaceAttribute}]`).appendChild(iframe)} if(this.options.hashSettings.location){this._getHash();this._setHash()} this.options.on.beforeOpen(this);document.dispatchEvent(new CustomEvent("beforePopupOpen",{detail:{popup:this,},}));this.targetOpen.element.classList.add(this.options.classes.popupActive);document.documentElement.classList.add(this.options.classes.bodyActive);if(!this._reopen)!this.bodyLock?bodyLock():null;else this._reopen=!1;this.targetOpen.element.setAttribute("aria-hidden","false");this.previousOpen.selector=this.targetOpen.selector;this.previousOpen.element=this.targetOpen.element;this._selectorOpen=!1;this.isOpen=!0;setTimeout(()=>{this._focusTrap()},50);this.options.on.afterOpen(this);document.dispatchEvent(new CustomEvent("afterPopupOpen",{detail:{popup:this,},}));this.popupLogging(`Opened the popup`)}else this.popupLogging(`Uh-oh, there's no such popup. Make sure you're typing it in correctly.`)}} close(selectorValue){if(selectorValue&&typeof selectorValue==="string"&&selectorValue.trim()!=="") this.previousOpen.selector=selectorValue;if(!this.isOpen||!bodyLockStatus)return;this.options.on.beforeClose(this);document.dispatchEvent(new CustomEvent("beforePopupClose",{detail:{popup:this,},}));if(this.youTubeCode) if(this.targetOpen.element.querySelector(`[${this.options.youtubePlaceAttribute}]`)) this.targetOpen.element.querySelector(`[${this.options.youtubePlaceAttribute}]`).innerHTML="";this.previousOpen.element.classList.remove(this.options.classes.popupActive);this.previousOpen.element.setAttribute("aria-hidden","true");if(!this._reopen){document.documentElement.classList.remove(this.options.classes.bodyActive);!this.bodyLock?bodyUnlock():null;this.isOpen=!1} this._removeHash();if(this._selectorOpen){this.lastClosed.selector=this.previousOpen.selector;this.lastClosed.element=this.previousOpen.element} this.options.on.afterClose(this);document.dispatchEvent(new CustomEvent("afterPopupClose",{detail:{popup:this,},}));setTimeout(()=>{this._focusTrap()},50);this.popupLogging(`Closed the popup`)} _getHash(){if(this.options.hashSettings.location) this.hash=this.targetOpen.selector.includes("#")?this.targetOpen.selector:this.targetOpen.selector.replace(".","#")} _openToHash(){let classInHash=document.querySelector(`.${window.location.hash.replace("#", "")}`)?`.${window.location.hash.replace("#", "")}`:document.querySelector(`${window.location.hash}`)?`${window.location.hash}`:null;const buttons=document.querySelector(`[${this.options.attributeOpenButton} = "${classInHash}"]`)?document.querySelector(`[${this.options.attributeOpenButton} = "${classInHash}"]`):document.querySelector(`[${this.options.attributeOpenButton} = "${classInHash.replace( ".", "#" )}"]`);if(buttons&&classInHash)this.open(classInHash)} _setHash(){history.pushState("","",this.hash)} _removeHash(){history.pushState("","",window.location.href.split("#")[0])} _focusCatch(e){const focusable=this.targetOpen.element.querySelectorAll(this._focusEl);const focusArray=Array.prototype.slice.call(focusable);const focusedIndex=focusArray.indexOf(document.activeElement);if(e.shiftKey&&focusedIndex===0){focusArray[focusArray.length-1].focus();e.preventDefault()} if(!e.shiftKey&&focusedIndex===focusArray.length-1){focusArray[0].focus();e.preventDefault()}} _focusTrap(){const focusable=this.previousOpen.element.querySelectorAll(this._focusEl);if(!this.isOpen&&this.lastFocusEl)this.lastFocusEl.focus();else focusable[0].focus()} popupLogging(message){this.options.logging?FLS(`[Popupos]: ${message}`):null}} window.addEventListener("load",function(){setTimeout(function(){modules_flsModules.popup=new Popup({})},0)});class DynamicAdapt{constructor(type){this.type=type} init(){this.оbjects=[];this.daClassname="_dynamic_adapt_";this.nodes=[...document.querySelectorAll("[data-da]")];this.nodes.forEach((node)=>{const data=node.dataset.da.trim();const dataArray=data.split(",");const оbject={};оbject.element=node;оbject.parent=node.parentNode;оbject.destination=оbject.element.hasAttribute("data-da-parent")?оbject.element.closest(оbject.element.dataset.daParent).querySelector(`${dataArray[0].trim()}`):document.querySelector(`${dataArray[0].trim()}`);оbject.breakpoint=dataArray[1]?dataArray[1].trim():"767";оbject.place=dataArray[2]?dataArray[2].trim():"last";оbject.index=this.indexInParent(оbject.parent,оbject.element);this.оbjects.push(оbject)});this.arraySort(this.оbjects);this.mediaQueries=this.оbjects.map(({breakpoint})=>`(${this.type}-width: ${breakpoint}px),${breakpoint}`).filter((item,index,self)=>self.indexOf(item)===index);this.mediaQueries.forEach((media)=>{const mediaSplit=media.split(",");const matchMedia=window.matchMedia(mediaSplit[0]);const mediaBreakpoint=mediaSplit[1];const оbjectsFilter=this.оbjects.filter(({breakpoint})=>breakpoint===mediaBreakpoint);matchMedia.addEventListener("change",()=>{this.mediaHandler(matchMedia,оbjectsFilter)});this.mediaHandler(matchMedia,оbjectsFilter)})} mediaHandler(matchMedia,оbjects){if(matchMedia.matches) оbjects.forEach((оbject)=>{this.moveTo(оbject.place,оbject.element,оbject.destination)});else оbjects.forEach(({parent,element,index})=>{if(element.classList.contains(this.daClassname)) this.moveBack(parent,element,index)})} moveTo(place,element,destination){element.classList.add(this.daClassname);if(place==="last"||place>=destination.children.length){destination.append(element);return} if(place==="first"){destination.prepend(element);return} destination.children[place].before(element)} moveBack(parent,element,index){element.classList.remove(this.daClassname);if(parent.children[index]!==void 0) parent.children[index].before(element);else parent.append(element)} indexInParent(parent,element){return[...parent.children].indexOf(element)} arraySort(arr){if(this.type==="min") arr.sort((a,b)=>{if(a.breakpoint===b.breakpoint){if(a.place===b.place)return 0;if(a.place==="first"||b.place==="last")return-1;if(a.place==="last"||b.place==="first")return 1;return 0} return a.breakpoint-b.breakpoint});else{arr.sort((a,b)=>{if(a.breakpoint===b.breakpoint){if(a.place===b.place)return 0;if(a.place==="first"||b.place==="last")return 1;if(a.place==="last"||b.place==="first")return-1;return 0} return b.breakpoint-a.breakpoint});return}}} const da=new DynamicAdapt("max");da.init();function handleScreenWidth(){if(window.innerWidth<768){const sliders=document.querySelectorAll(".programs__slider");sliders.forEach((slider)=>{const slides=slider.querySelectorAll(".slide-programs");slides.forEach((slide,index)=>{if(index>=3){slide.classList.add("slide-programs--hidden");_slideUp(slide)}})});const showMoreButton=document.querySelector(".programs__show-more");if(showMoreButton) showMoreButton.addEventListener("click",()=>{showMoreButton.classList.add("_content-is-showing");const hiddenSlides=document.querySelectorAll(".slide-programs--hidden");hiddenSlides.forEach((slide)=>{_slideDown(slide)})})}} function initializeVimeoVideos(){const slides=document.querySelectorAll(".slide-professors");const players=[];const isTouchDevice=document.documentElement.classList.contains("touch");slides.forEach((slide)=>{let videoContainer=slide.querySelector(".slide-professors__video");if(videoContainer){try{let player,isVimeo;if(videoContainer.querySelector("iframe")){isVimeo=!0;player=new Vimeo.Player(videoContainer.querySelector("iframe"))}else{isVimeo=!1;player=videoContainer.querySelector("video")} players.push(player);if(isTouchDevice){slide.addEventListener("click",()=>{players.forEach((activePlayer)=>{activePlayer!==player&&activePlayer.pause().then(()=>{var otherSlide=activePlayer.element.closest(".slide-professors");otherSlide&&otherSlide.classList.remove("_video-is-showing")}).catch((error)=>{console.warn("Pause error ignored:",error)})}),slide.classList.contains("_video-is-showing")?player.pause().then(()=>{slide.classList.remove("_video-is-showing")}).catch((error)=>{console.warn("Pause error ignored:",error)}):player.play().then(()=>{slide.classList.add("_video-is-showing")}).catch((error)=>{console.warn("Play error ignored:",error)})})}else{let playPromise;slide.addEventListener("mouseenter",()=>{if(isVimeo){playPromise?playPromise.then(()=>{player.play().then(()=>{slide.classList.add("_video-is-showing")}).catch((error)=>{console.warn("Play error ignored:",error)})}):(playPromise=player.play().then(()=>{slide.classList.add("_video-is-showing")}).catch((error)=>{console.warn("Play error ignored:",error)}))}else{player.play();slide.classList.add("_video-is-showing")}});slide.addEventListener("mouseleave",()=>{if(isVimeo){playPromise?playPromise.then(()=>{player.pause().then(()=>{slide.classList.remove("_video-is-showing")}).catch((error)=>{console.warn("Pause error ignored:",error)})}):player.pause().then(()=>{slide.classList.remove("_video-is-showing")}).catch((error)=>{console.warn("Pause error ignored:",error)}),(playPromise=null)}else{player.pause();slide.classList.remove("_video-is-showing")}})}}catch(error){console.log(error);console.log("Script waiting for cookies consent system")}}})} window.addEventListener("load",function(){setTimeout(function(){handleScreenWidth();initializeVimeoVideos();const communityBlock=document.querySelector(".community__swiper");if(communityBlock){document.addEventListener("beforePopupOpen",function(e){communityBlock.classList.add("_pause-animation")});document.addEventListener("beforePopupClose",function(e){communityBlock.classList.remove("_pause-animation")})} const formModal=document.querySelector(".contact-modal__inner");if(formModal) document.addEventListener("click",function(e){let target=e.target;if(target.hasAttribute("data-form-open")){if(document.documentElement.classList.contains("_form-modal-is-open")){document.documentElement.classList.remove("_form-modal-is-open");if(window.innerWidth>992)bodyUnlock()}else{document.documentElement.classList.add("_form-modal-is-open");if(window.innerWidth>992)bodyLock()} return} if(document.documentElement.classList.contains("_form-modal-is-open")&&(!target.closest(".contact-modal__inner")||target.closest(".contact-modal__close"))){document.documentElement.classList.remove("_form-modal-is-open");if(window.innerWidth>992)bodyUnlock()}});document.addEventListener("afterPopupOpen",function(e){const currentPopup=e.detail.popup;if(currentPopup.targetOpen.element.classList.contains("video-modal")){let iframe=currentPopup.targetOpen.element.querySelector("iframe");if(iframe){iframe.setAttribute("dnt","1");const player=new Vimeo.Player(iframe);console.log(player);player.play().catch((error)=>{console.warn("Play error ignored:",error)})}}});const langSwitchers=document.querySelectorAll(".lang-switcher");document.addEventListener("click",function(e){if(e.target.closest(".lang-switcher__content"))return;if(e.target.closest(".lang-switcher")) e.target.closest(".lang-switcher").classList.toggle("active");else langSwitchers.forEach((el)=>{if(el.classList.contains("active"))el.classList.remove("active")})})},0)});window.addEventListener("resize",handleScreenWidth);window.FLS=!1;isWebp();addTouchClass();addLoadedClass();menuInit();if(!document.querySelector(".header--simple")){menuSublistsInit()} formFieldsInit({viewPass:!1,autoHeight:!1,});formSubmit();headerScroll()})();jQuery(function(){const menuList=document.querySelector(".menu__list");if(menuList){const firstMenuItem=menuList.querySelector(".menu__item");const line=document.createElement("li");line.classList.add("menu__line");menuList.appendChild(line);if(firstMenuItem)setLinePosition(firstMenuItem);menuList.addEventListener("mouseenter",(e)=>{if(e.target.closest(".menu__item")) moveLine(e.target.closest(".menu__item"))});menuList.addEventListener("mouseleave",()=>{line.style.opacity="0"});menuList.addEventListener("mousemove",(e)=>{const item=e.target.closest(".menu__item");if(item)moveLine(item)});function moveLine(item){setLinePosition(item);line.style.opacity="1"} function setLinePosition(item){const rect=item.getBoundingClientRect();const parentRect=menuList.getBoundingClientRect();line.style.width=`${rect.width}px`;line.style.height=`${rect.height}px`;const translateX=rect.left-parentRect.left;const translateY=rect.bottom-parentRect.top;line.style.transform=`translate3d(${translateX}px, calc(${translateY}px + -100%), 0)`}}})